import os
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import matplotlib.colors as co
%matplotlib inline
data_path = "./data"
countries_path = './data/countries.xlsx'
pdf_analysis_path = './data/total'
path_stock_list = "./data/stock.xlsx"
def read_stock_list(path):
df = pd.read_excel(path)
return df
def get_total_stock_analysis(stock_list, path):
total = pd.DataFrame()
for index, row in stock_list.iterrows():
try:
stock_code = row['Stock Code']
pkl_path = os.path.join(path, "%s_analysis.pkl" % (stock_code))
df = pd.read_pickle(pkl_path)
total = pd.concat([total, df])
except Exception as e:
print(e)
return total
stock_list = read_stock_list(path_stock_list)
total_stock_analysis = get_total_stock_analysis(stock_list, pdf_analysis_path)
total_stock_analysis
country_stock_mean = total_stock_analysis.groupby(['Country', "lat", "lng", "Stock Code"])['Percent'].mean().reset_index()
country_stock_mean
def plot_maps(frame, stock_list):
for index, row in stock_list.iterrows():
try:
stock_code = row['Stock Code']
m = Basemap(projection='cyl')
scale = 0.2
m.shadedrelief(scale=scale)
cmap = plt.cm.jet
vmin = 0
vmax = 30
data = frame.loc[frame['Stock Code'] == stock_code]
lon = [row['lng'] for index, row in data.iterrows()]
lat = [row['lat'] for index, row in data.iterrows()]
wind = [row['Percent'] for index, row in data.iterrows()]
plt.scatter(lon, lat, marker='o',
c=wind, alpha=0.5, zorder=10, vmin=vmin, vmax=vmax, cmap=cmap)
try:
norm = co.Normalize(vmin=vmin, vmax=vmax)
pointcolors = plt.cm.ScalarMappable(norm, cmap)
pointcolors.set_array([])
cbar = m.colorbar(pointcolors, location='bottom')
cbar.set_label('%')
except Exception as e:
pass
plt.title('Stock %s Country distribution' % stock_code)
plt.show()
except Exception as e:
print(e)
plot_maps(country_stock_mean, stock_list)